package fr.upmf.miam.imageannotation;

import android.net.Uri;
import android.provider.BaseColumns;

/*******************************************************************************
 *  Contrat : constantes utilisées par le Provider pour gérer chaque classe <br>
 *  Définit les noms de table, d'attributs, uris et types de données gérées par le Provider
 *  @author Jerome David
 */
public abstract class ImageAnnotationContract {
	
	public final static String AUTHORITY="fr.upmf.miam.imageannotation"; //authorite
	
	protected final static Uri BASE_URI=Uri.parse("content://"+AUTHORITY); //URI de base de l'application
	
	
	/*******************************************************************************
	 *  Constantes relatives à la table People <br>
	 *  Le "implements BaseColumns" permet de recuperer les constantes _ID="_id"
	 *  @author Jerome David
	 */
	public static abstract class People implements BaseColumns {
		protected final static String TABLE_NAME="people";
		
		public final static Uri CONTENT_URI=Uri.withAppendedPath(BASE_URI, "people"); 							//uri de la table people (utilisée par les Provider pour récupérer les données)
		public final static String CONTENT_TYPE="vnd.android.cursor.dir/fr.upmf.imageannotation.people"; 			//type MIME de la table people
		public final static String CONTENT_ITEM_TYPE="vnd.android.cursor.item/fr.upmf.imageannotation.people";	//type MIME des lignes de la table people
		
		//attributs (liaison avec le nom des attributs en BD)
		public final static String URI="uri";

		
		/*******************************************************************************
		 *  Constantes relatives à la table People/#/Picture <br>
		 *  Cette classe etend ImageAnnotationContract.Picture pour recuperer les attributs de la table Picture
		 *  @author Jerome David
		 */
		public static abstract class Picture extends ImageAnnotationContract.Picture {
			
			//chemin à concatener à l'URI d'une Picture pour obtenir l'URI d'une table People/#/Picture
			public final static String CONTENT_PATH="picture";
		}
	}
	
	
	/*******************************************************************************
	 *  Constantes relatives à la table Annotation <br>
	 *  Cette classe est protected car les attributs n'ont pas etre accessibles de l'exterieur
	 *  @author Jerome David
	 */
	protected static abstract class Annotation {
		protected final static String TABLE_NAME="annotation";
		
		//attributs
		public final static String PEOPLE_ID="people_id";
		public final static String PICTURE_ID="picture_id";
	}

	
	/*******************************************************************************
	 *  Constantes relatives à la table Picture <br>
	 *  Le "implements BaseColumns" permet de recuperer les constantes _ID="_id"
	 *  @author Jerome David
	 */
	public static abstract class Picture implements BaseColumns {
		protected final static String TABLE_NAME="picture";
		
		public final static Uri CONTENT_URI=Uri.withAppendedPath(BASE_URI, "picture");
		public final static String CONTENT_TYPE="vnd.android.cursor.dir/fr.upmf.imageannotation.picture";
		public final static String CONTENT_ITEM_TYPE="vnd.android.cursor.item/fr.upmf.imageannotation.picture";
		
		//attributs
		public final static String URI="uri";

		
		/*******************************************************************************
		 *  Constantes relatives à la table Picture/#/People <br>
		 *  Cette classe etend ImageAnnotationContract.People pour recuperer les attributs de la table People
		 *  @author Jerome David
		 */
		public static abstract class People extends ImageAnnotationContract.People {
			
			//chemin à concatener à l'URI d'une Picture pour obtenir l'URI d'une table Picture/#/People
			public final static String CONTENT_PATH="people";
		}
		
	}
	
}
